#pragma once
#include <Arduino.h>

/**
 * @class Led
 * @brief 控制单个 LED 灯的类
 *
 * 提供基础的 LED 灯控制功能，包括开、关和切换状态。
 * 通过构造函数绑定指定 GPIO 引脚，之后可以通过方法操作 LED 灯。
 */
class Led {
public:
    /**
     * @brief 构造函数，初始化 LED 对应的引脚
     * @param pin LED 连接的 GPIO 引脚号
     *
     * 构造时不会自动点亮 LED，只会配置引脚为输出模式。
     */
    explicit Led(uint8_t pin);

    /**
     * @brief 点亮 LED
     *
     * 将 LED 对应的 GPIO 设置为高电平（点亮 LED）。
     */
    void on();

    /**
     * @brief 关闭 LED
     *
     * 将 LED 对应的 GPIO 设置为低电平（熄灭 LED）。
     */
    void off();

    /**
     * @brief 切换 LED 状态
     *
     * 如果 LED 当前是点亮状态，则关闭；如果是关闭状态，则点亮。
     */
    void toggle();

private:
    uint8_t pin; ///< LED 对应的 GPIO 引脚
    bool state;  ///< 当前 LED 状态：true=点亮，false=关闭
};